﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Threading;
using TeacherLeftHand.Model;
using TeacherLeftHand.Util;
using RichTextBox = Microsoft.Windows.Controls.RichTextBox;

namespace CustomControl
{
    public class EllipsisRichTextBox : RichTextBox
    {
        public EllipsisRichTextBox()
            : base()
        {
            this.Loaded += new RoutedEventHandler(EllipsisRichTextBox_Loaded);
            

        }
        //protected override void OnRender(DrawingContext drawingContext)
        //{
        //    string testString = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor";

        //    // Create the initial formatted text string.
        //    var formattedText = new FormattedText(
        //        testString,
        //        CultureInfo.GetCultureInfo("en-us"),
        //        FlowDirection.LeftToRight,
        //        new Typeface("Verdana"),
        //        16,
        //        Brushes.Black);

        //    // Set a maximum width and height. If the text overflows these values, an ellipsis "..." appears.
        //    formattedText.MaxTextWidth = 300;
        //    formattedText.MaxTextHeight = 240;

        //    // Use a larger font size beginning at the first (zero-based) character and continuing for 5 characters.
        //    // The font size is calculated in terms of points -- not as device-independent pixels.
        //    formattedText.SetFontSize(36 * (96.0 / 72.0), 0, 5);

        //    // Use a Bold font weight beginning at the 6th character and continuing for 11 characters.
        //    formattedText.SetFontWeight(FontWeights.Bold, 6, 11);

        //    // Use a linear gradient brush beginning at the 6th character and continuing for 11 characters.
        //    formattedText.SetForegroundBrush(
        //                            new LinearGradientBrush(
        //                            Colors.Orange,
        //                            Colors.Teal,
        //                            90.0),
        //                            6, 11);

        //    // Use an Italic font style beginning at the 28th character and continuing for 28 characters.
        //    formattedText.SetFontStyle(FontStyles.Italic, 28, 28);

        //    // Draw the formatted text string to the DrawingContext of the control.
        //    drawingContext.DrawText(formattedText, new Point(10, 0));
        //}

        void EllipsisRichTextBox_Loaded(object sender, RoutedEventArgs e)
        {
            var toolTip = new ToolTip();
            toolTip.StaysOpen = true;
            toolTip.BorderBrush = Brushes.LightBlue;
            toolTip.Background = Brushes.LightBlue;
            toolTip.Content = new Microsoft.Windows.Controls.RichTextBox 
                                        {MinHeight = 25, MinWidth = 100, MaxWidth = 600,Text = this.Text, Margin = new Thickness(0,5,0,5)};
            toolTip.PlacementTarget = this;
            toolTip.Placement = PlacementMode.Mouse;
            
            this.ToolTip = toolTip;

    
        }
    }
}
